{
 "cells": [
  {
   "metadata": {
    "collapsed": true
   },
   "cell_type": "markdown",
   "source": [
    "#### 概述\n",
    "要构建更强大的AI工程应用，只有生成文本这样的\"纸上谈兵\"能力自然是不够的，工具Tools不仅是\"肢体\"的延伸，而是为\"大脑\"插上想象力的\"翅膀\"。\n",
    "借助工具，才能让AI应用的能力真正具备无限的可能，才能从\"认识世界\"走向\"改变世界\"。\n",
    "Tools用于扩展大模型的能力，使其能够与外部系统、API或自定义函数交互，从而完成仅靠文本生成无法实现的任务(如搜索、计算、数据库查询等)。\n",
    "特点：\n",
    "    增强LLM功能：让LLM突破纯文本生成的限制，执行实际操作(如调用搜索引擎)\n",
    "    支持智能决策：在Agent工作流中，LLM根据用户输入动态选择最合适的Tool完成任务\n",
    "    模块化设计：每个Tool专注一个功能，便于复用和组合(例如：搜索工具+计算工具+天气查询工具)\n",
    "langchain拥有大量第三方工具，请访问工具集查看可用工具列表\n",
    "https://python.langchain.com/docs/integrations/tools/"
   ],
   "id": "419632bce1115f8c"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "#### Tool的要素\n",
    "Tools本质上是封装了特定功能的可调用模块，是Agent、Chain和LLM可以用来与世界互动的接口\n",
    "Tool通常包含如下几个要素：\n",
    "    name：工具的名称\n",
    "    description：工具的功能描述\n",
    "    该工具输入的JSON模式\n",
    "    要调用的函数\n",
    "    return_direct：是否应将工具结果直接返回给用户(仅对Agent相关)\n",
    "实操步骤：\n",
    "    步骤1：将name和description和JSON模式作为上下文传递给LLM\n",
    "    步骤2：LLM会根据提示词推断出需要调用哪些工具，并提供具体的调用参数信息\n",
    "    步骤3：用户需要根据返回的工具调用信息，自行触发相关工具的回调"
   ],
   "id": "fbf3defae6ee7011"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
